package cn.tedu.oop;
/*本类用于测试关键字final*/
public class TestFinal {
    public static void main(String[] args) {
        Son2 son2 = new Son2();
        son2.work();
    }
}
//1.创建父类
/*1.final可以用来修饰类,被final修饰的类是最终类,不可以被继承
 * 可以把被final修饰的类看成树结构中的叶子节点*/
//3.测试类被final修饰
//final class Father2{//都不是子类,更不能谈重写
class Father2{
    final /*static */int B = 100;
    //4.定义父类的普通方法
    //6.测试用final修饰方法
    /*2.final可以用来修饰方法,被final修饰的方法是这个方法的最终实现,不可以被重写*/
    //public final void work(){ //但可以重写该类的非final叶子节点的方法,不同使用场景
    public void work(){
        System.out.println("在工厂里上班");
        int a;
        //int b=a;
        final int B /*= 100*/;
    }
}
//2.创建子类
class Son2 extends Father2{
    final int B = 100;

    int a;

    //5.重写父类的方法
    @Override
    public void work(){
        System.out.println("在互联网大厂上班~");
        /*3.被final修饰的是常量,常量的值不可以被修改
         * 注意:不管是成员位置还是局部位置,常量定义的时候必须赋值(要使用和调用和打印,才赋值)
         * 注意:常量的名称必须是全大写,单词与单词之间使用_分割*/
        final int B /*= 100*/;
        //B = 200;//报错:常量的值不可以被修改
        //System.out.println(B);
        System.out.println(Integer.MAX_VALUE);

    }
}